package model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.TreeSet;
import javax.lang.model.type.NullType;
import javax.swing.JOptionPane;
import comparators.OrderComparator;
import controllers.SerializationController;
import utilities.OrderStatus;
/**
* @author iulia
*
* Class that deals with order processing.
*
*/
public class OPDept implements Serializable {
private static final long serialVersionUID = 1L;
private TreeSet<Order> orders;
public OPDept() {
this.orders = new TreeSet<Order>(new OrderComparator());
}
public OPDept(TreeSet<Order> orders) {
setOrders(orders);
}
public void setOrders(TreeSet<Order> orders) {
this.orders = orders;
}
public TreeSet<Order> getOrders() {
return orders;
}
public int getNextOrderId() {
// JOptionPane.showMessageDialog(null, orders.first().getId());
// JOptionPane.showMessageDialog(null, orders.last().getId());
return orders.last().getId() + 1;
}
public void addOrders(Order o) {
// JOptionPane.showMessageDialog(null, "Added" + o.getId());
this.orders.add(o);
}
public void processOrders() {
int oldQuantity;
Iterator<Order> itr = this.orders.iterator();
while (itr.hasNext()) {
Order o = itr.next();
System.out.println("Order: ");
// JOptionPane.showMessageDialog(null, "Order" + o.getId() + " " +
// o.getStatus());
if (o.getStatus() == OrderStatus.PENDING) {
o.processOrder();
System.out.println("enter PENDING");
}
if (o.getStatus() == OrderStatus.FAILED) {
// JOptionPane.showMessageDialog(null, "Order FAILED!");
} else {
if (o.getStatus() == OrderStatus.PROCESSING) {
System.out.println("enter PROCESSING");
TreeSet<OrderedProduct> ordP = o.getOrderedProducts();
Iterator<OrderedProduct> itrOP = ordP.iterator();
while (itrOP.hasNext()) {
OrderedProduct op = itrOP.next();
System.out.println("OPDEPT:" + op.getProduct().getTitle() + " " + op.getOrderedQuantity());
oldQuantity = op.getProduct().getQuantity();
op.getProduct().setQuantity(oldQuantity - op.getOrderedQuantity());
System.out.print("NEW:");
op.getProduct().printProduct();
}
o.setStatus(OrderStatus.DELIVERED);
}
}
}
}
}